package com.cskaoyan.javase.oop2._1extends._10final._3variable._3static;

/**
 * final修饰静态成员变量,表示静态成员常量,表示"全局常量",在整个类的全局唯一且不可变,是一个真正意义上的常量!!
 *
 * 语法:
 *      [访问权限修饰符] static final 数据类型 变量名;
 *
 * 全局常量的取值也不能依赖于默认初始化,那么在类加载过程中,给静态成员变量赋值的手段还有:
 *      1.显式赋值
 *      2.静态代码块
 *
 * 以上赋值手段,必须选择其一,而且也只能选择其一.
 *
 * 注意事项:
 *      1.static final 还是 final static 是无所谓的,想怎么写都行
 *      2.final修饰静态成员变量是一个全局常量，不会害怕外界访问和修改。
 *          所以在很多时候，它的访问权限修饰符都是public的。
 *
 *      3.如果使用静态代码测试类加载，那么访问类的全局常量，有些场景是不会触发类加载的。（感兴趣自己测试一下，作为锻炼动手能力的小demo）
 *
 *
 * @since 11:37
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 全局常量是真正意义上的常量
        System.out.println(Teacher.SALARY);
        // Teacher.SALARY = 1000;
    }
}

class Teacher {
   public  final static double SALARY;

    static {
        SALARY = 20000;
    }
}